#include "processbar.h"
const char* label =  "|/-\\";
// 第一个版本
void process()
{
    char buffer[NUM];
    memset(buffer, '\0', sizeof(buffer));
    int cnt = 0;
    int n = strlen(label);
    buffer[0] = HEAD;
    while(cnt <= 100)
    {
        printf("[%-100s][%3d%%][%c]\r", buffer, cnt, label[cnt%n]);
        fflush(stdout);
        buffer[cnt++] = BODY;
        if(cnt < 100) buffer[cnt] = HEAD;
        usleep(50000);
    }
    printf("\n");
}

// 第二个版本
char buffer[NUM] = { 0 };
void process_flush(double rate)
{
    int n = strlen(label);
    static int cnt = 0; // 用来刷新运行图
    // 如果进度小于百分之一，只打印一个箭头
    if(rate <= 1.0) buffer[0] = HEAD;
    printf("[%-100s][%.1f%%][%c]\r", buffer, rate, label[cnt%n]);
    fflush(stdout);
    buffer[(int)rate] = BODY;
    if((int)rate < 99) buffer[(int)rate + 1] = HEAD;
    if(rate >= 100) printf("\n"); // 打印最后一次后换行
    cnt++;
    cnt %= n;
}
